home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / share / snmp / mib2c-data / mfd-data-access.m2c < prev    next >
Text File  |  2008-09-22  |  11KB  |  332 lines

  1. ##//#########################################################  -*- c -*-
  2. ##//generic include for XXX. Do not use directly.
  3. ##
  4. ##//$Id: mfd-data-access.m2c 14170 2006-01-26 17:02:48Z dts12 $
  5. ##//####################################################################
  6. ##//####################################################################
  7. ##
  8. ## lower conf files get confused with multiple processing types, so
  9. ## set single options
  10. @eval $mfd_data_access_processing_type = "$m2c_processing_type"@
  11. @eval $m2c_processing_type = 'h'@
  12. @open ${name}_data_access.h@
  13. @eval $hack = "Id"@
  14. /*
  15.  * Note: this file originally auto-generated by mib2c using
  16.  *       version $Revision: 14170 $ of $RCSfile$
  17.  *
  18.  * $$hack:$
  19.  */
  20. @if $m2c_mark_boundary == 1@
  21. /** START code generated by $RCSfile$ $Revision: 14170 $ */
  22. @end@
  23. @eval $m2c_save = "$name"@
  24. @eval $name = "${name}_DATA_ACCESS"@
  25. @include generic-header-top.m2i@
  26. @eval $name = "$m2c_save"@
  27.  
  28. /* *********************************************************************
  29.  * function declarations
  30.  */
  31.  
  32. /* *********************************************************************
  33.  * Table declarations
  34.  */
  35. @foreach $table table@
  36. @    include m2c_setup_table.m2i@
  37. @    include details-table.m2i@
  38.  
  39. ##@    eval $m2c_tmp=""@
  40. ##@    foreach $node index@
  41. ##@      include m2c_setup_node.m2i@
  42. ##@      eval $m2c_tmp="$m2c_tmp, $m2c_node_param_val"@
  43. ##@    end@ // for each index
  44.  
  45.     int ${context}_init_data(${context}_registration * ${context}_reg);
  46.  
  47. @    include mfd-access-${m2c_table_access}-defines.m2i@
  48.     int ${context}_row_prep( ${context}_rowreq_ctx *rowreq_ctx);
  49.  
  50. @  if ($m2c_table_row_creation == 1) || ($m2c_table_persistent == 1)@
  51. int ${context}_validate_index( ${context}_registration * ${context}_reg,
  52.                                ${context}_rowreq_ctx *rowreq_ctx);
  53. @    foreach $node externalindex@
  54. @        include m2c_setup_node.m2i@
  55.     int ${context}_${node}_check_index( ${context}_rowreq_ctx *rowreq_ctx ); /* external */
  56. @    end@ # foreach externalindex
  57. @    foreach $node internalindex@
  58. @        include m2c_setup_node.m2i@
  59. int ${node}_check_index( ${context}_rowreq_ctx *rowreq_ctx ); /* internal */
  60. @    end@ # foreach internalindex
  61. @  end@ # row creation/persistent
  62. @end@
  63.  
  64. @eval $m2c_save = "$name"@
  65. @eval $name = "${name}_DATA_ACCESS"@
  66. @include generic-header-bottom.m2i@
  67. @eval $name = "$m2c_save"@
  68. ##//##################################################################
  69. ##//Do the .c file
  70. ##//##################################################################
  71. @eval $m2c_processing_type = 'c'@
  72. @open ${name}_data_access.c@
  73. /*
  74.  * Note: this file originally auto-generated by mib2c using
  75.  *       version $Revision: 14170 $ of $RCSfile$ 
  76.  *
  77.  * $$hack:$
  78.  */
  79. @include generic-source-includes.m2i@
  80.  
  81. #include "${name}_data_access.h"
  82.  
  83. /** @ingroup interface
  84.  * @addtogroup data_access data_access: Routines to access data
  85.  *
  86.  * These routines are used to locate the data used to satisfy
  87.  * requests.
  88.  * 
  89.  * @{
  90.  */
  91. @foreach $table table@
  92. @    include m2c_setup_table.m2i@
  93. @    include details-table.m2i@
  94.  
  95. /**
  96.  * initialization for ${context} data access
  97.  *
  98.  * This function is called during startup to allow you to
  99.  * allocate any resources you need for the data table.
  100.  *
  101.  * @param ${context}_reg
  102.  *        Pointer to ${context}_registration
  103.  *
  104.  * @retval MFD_SUCCESS : success.
  105.  * @retval MFD_ERROR   : unrecoverable error.
  106.  */
  107. int
  108. ${context}_init_data(${context}_registration * ${context}_reg)
  109. {
  110.     DEBUGMSGTL(("verbose:${context}:${context}_init_data","called\n"));
  111.  
  112.     /*
  113.      * TODO:303:o: Initialize $context data.
  114.      */
  115. @ifconf ${table}_init_data.m2i@
  116. @   include ${table}_init_data.m2i@
  117. @else@
  118. @   if $m2c_include_examples == 1@
  119. $example_start
  120.     /*
  121.      * if you are the sole writer for the file, you could
  122.      * open it here. However, as stated earlier, we are assuming
  123.      * the worst case, which in this case means that the file is
  124.      * written to by someone else, and might not even exist when
  125.      * we start up. So we can't do anything here.
  126.      */
  127. $example_end
  128. @   end@
  129.  
  130.     return MFD_SUCCESS;
  131. @end@ #ifconf
  132. } /* ${context}_init_data */
  133.  
  134. @    include mfd-access-${m2c_table_access}-defines.m2i@
  135. /**
  136.  * prepare row for processing.
  137.  *
  138.  *  When the agent has located the row for a request, this function is
  139.  *  called to prepare the row for processing. If you fully populated
  140.  *  the data context during the index setup phase, you may not need to
  141.  *  do anything.
  142.  *
  143.  * @param rowreq_ctx pointer to a context.
  144.  *
  145.  * @retval MFD_SUCCESS     : success.
  146.  * @retval MFD_ERROR       : other error.
  147.  */
  148. int
  149. ${context}_row_prep( ${context}_rowreq_ctx *rowreq_ctx)
  150. {
  151.     DEBUGMSGTL(("verbose:${context}:${context}_row_prep","called\n"));
  152.  
  153.     netsnmp_assert(NULL != rowreq_ctx);
  154.  
  155.     /*
  156.      * TODO:390:o: Prepare row for request.
  157.      * If populating row data was delayed, this is the place to
  158.      * fill in the row for this request.
  159.      */
  160.  
  161.     return MFD_SUCCESS;
  162. } /* ${context}_row_prep */
  163.  
  164. ##//####################################################################
  165. @  if ($m2c_table_row_creation == 1) || ($m2c_table_persistent == 1)@
  166. /*
  167.  * TODO:420:r: Implement $context index validation.
  168.  */
  169. @    foreach $node externalindex@
  170. @        include m2c_setup_node.m2i@
  171. @        if $m2c_report_progress == 1@
  172. @           print | |   +-> Processing index $node@
  173. @        end@
  174. @        include details-node.m2i@
  175. /**
  176.  * check validity of ${node} external index portion
  177.  *
  178.  * NOTE: this is not the place to do any checks for the sanity
  179.  *       of multiple indexes. Those types of checks should be done in the
  180.  *       ${context}_validate_index() function.
  181.  *
  182.  * @retval MFD_SUCCESS   : the incoming value is legal
  183.  * @retval MFD_ERROR     : the incoming value is NOT legal
  184.  */
  185. int
  186. ${context}_${node}_check_index( ${context}_rowreq_ctx *rowreq_ctx )
  187. {
  188.     DEBUGMSGTL(("verbose:${context}:${context}_${node}_check_index","called\n"));
  189.  
  190.     netsnmp_assert(NULL != rowreq_ctx);
  191.  
  192.     /*
  193.      * TODO:424:M: |-> Check $context external index $node.
  194.      * check that index value in the table context (rowreq_ctx)
  195.      * for the external index $node is legal.
  196.      */
  197.  
  198.     return MFD_SUCCESS; /*  external index $node ok */
  199. } /* ${context}_${node}_check_index */
  200.  
  201. @    end@ # foreach externalindex
  202. @    foreach $node internalindex@
  203. @        include m2c_setup_node.m2i@
  204. @        if $m2c_report_progress == 1@
  205. @           print | |   +-> Processing index $node@
  206. @        end@
  207. @        include details-node.m2i@
  208. /**
  209.  * check validity of ${node} index portion
  210.  *
  211.  * @retval MFD_SUCCESS   : the incoming value is legal
  212.  * @retval MFD_ERROR     : the incoming value is NOT legal
  213.  *
  214.  * @note this is not the place to do any checks for the sanity
  215.  *       of multiple indexes. Those types of checks should be done in the
  216.  *       ${context}_validate_index() function.
  217.  *
  218.  * @note Also keep in mind that if the index refers to a row in this or
  219.  *       some other table, you can't check for that row here to make
  220.  *       decisions, since that row might not be created yet, but may
  221.  *       be created during the processing this request. If you have
  222.  *       such checks, they should be done in the check_dependencies
  223.  *       function, because any new/deleted/changed rows should be
  224.  *       available then.
  225.  *
  226.  * The following checks have already been done for you:
  227. @if $node.enums == 1@
  228.  *    The value is one of $m2c_evals
  229. @elsif $node.ranges == 1@
  230. @    if ("$node.decl" eq "long") || ("$node.decl" eq "u_long")@
  231. @        eval $m2c_tmp_ns = "value"@
  232. @    else@
  233. @        eval $m2c_tmp_ns = "length"@
  234. @    end@
  235.  *    The $m2c_tmp_ns is in (one of) the range set(s): $m2c_evals
  236. @end@
  237.  *
  238.  * If there a no other checks you need to do, simply return MFD_SUCCESS.
  239.  */
  240. int
  241. ${node}_check_index( ${context}_rowreq_ctx *rowreq_ctx )
  242. {
  243.     DEBUGMSGTL(("verbose:${context}:${node}_check_index","called\n"));
  244.  
  245.     netsnmp_assert(NULL != rowreq_ctx);
  246.  
  247.     /*
  248.      * TODO:426:M: |-> Check $context index $node.
  249.      * check that index value in the table context is legal.
  250.      * (rowreq_ctx->tbl_index.$node)
  251.      */
  252.  
  253.     return MFD_SUCCESS; /* $node index ok */
  254. } /* ${node}_check_index */
  255.  
  256. @    end@ # foreach internalindex
  257. /**
  258.  * verify specified index is valid.
  259.  *
  260.  * This check is independent of whether or not the values specified for
  261.  * the columns of the new row are valid. Column values and row consistency
  262.  * will be checked later. At this point, only the index values should be
  263.  * checked.
  264.  *
  265.  * All of the individual index validation functions have been called, so this
  266.  * is the place to make sure they are valid as a whole when combined. If
  267.  * you only have one index, then you probably don't need to do anything else
  268.  * here.
  269.  * 
  270.  * @note Keep in mind that if the indexes refer to a row in this or
  271.  *       some other table, you can't check for that row here to make
  272.  *       decisions, since that row might not be created yet, but may
  273.  *       be created during the processing this request. If you have
  274.  *       such checks, they should be done in the check_dependencies
  275.  *       function, because any new/deleted/changed rows should be
  276.  *       available then.
  277.  *
  278.  *
  279.  * @param ${context}_reg
  280.  *        Pointer to the user registration data
  281.  * @param ${context}_rowreq_ctx
  282.  *        Pointer to the users context.
  283.  * @retval MFD_SUCCESS            : success
  284.  * @retval MFD_CANNOT_CREATE_NOW  : index not valid right now
  285.  * @retval MFD_CANNOT_CREATE_EVER : index never valid
  286.  */
  287. int
  288. ${context}_validate_index( ${context}_registration * ${context}_reg,
  289.                            ${context}_rowreq_ctx *rowreq_ctx)
  290. {
  291.     int rc = MFD_SUCCESS;
  292.  
  293.     DEBUGMSGTL(("verbose:${context}:${context}_validate_index","called\n"));
  294.  
  295.     /** we should have a non-NULL pointer */
  296.     netsnmp_assert( NULL != rowreq_ctx );
  297.  
  298.     /*
  299.      * TODO:430:M: |-> Validate potential $context index.
  300.      */
  301.     if(1) {
  302.         snmp_log(LOG_WARNING,"invalid index for a new row in the "
  303.                  "${context} table.\n");
  304.         /*
  305.          * determine failure type.
  306.          *
  307.          * If the index could not ever be created, return MFD_NOT_EVER
  308.          * If the index can not be created under the present circumstances
  309.          * (even though it could be created under other circumstances),
  310.          * return MFD_NOT_NOW.
  311.          */
  312.         if(0) {
  313.             return MFD_CANNOT_CREATE_EVER;
  314.         }
  315.         else {
  316.             return MFD_CANNOT_CREATE_NOW;
  317.         }
  318.     }
  319.  
  320.     return rc;
  321. } /* ${context}_validate_index */
  322.  
  323. @  end@ # persistent/row creation
  324. @end@
  325. ##
  326. /** @} */
  327. ##//####################################################################
  328. @if $m2c_mark_boundary == 1@
  329. /** END code generated by $RCSfile$ $Revision: 14170 $ */
  330. @end@
  331. @eval $m2c_processing_type = "$mfd_data_access_processing_type"@
  332.